CentOS 6
Sponsored Link

OpenStack Grizzly - Configure Swift#3 (Storage Node)
2013/08/23
 
Configure OpenStack Object Storage (Swift).
Swift consists 3 Nodes, it's Authentication Node, Proxy Node, Storage Node.
The example for Openstack of this site shows to configure All-in-One settings for Keystone, Glance, Cinder, Nova, Horizon, but on this Swift settings, configure a Node on another hosts like follows. (It uses Keystone Server as an Authentication Node)
                               |
     +------------+            |            +-----------+
     |  Auth Node |10.0.0.30   |   10.0.0.31|   Proxy   |
     | (Keystone) |------------+------------|    Node   |
     +------------+            |            +-----------+
                               |
      +------------------------+-----------------------+
      |                        |                       |
      |10.0.0.51               |10.0.0.52              |10.0.0.53
+-----------+            +-----------+           +-----------+
|  Storage  |            |  Storage  |           |  Storage  |
|   Node1   |------------|   Node2   |-----------|   Node3   |
+-----------+            +-----------+           +-----------+

 
Configure Storage Node on here.
It's OK to set the same settings mostly on Storage Nodes, but IP address and Device number are different, though.
Furthermore, add Hard drives on each Storage Nodes and create a partition "/dev/sdb1" for this settings.
[1] Install Swift-Account, Swift-Container, Swift-Object.
# install from EPEL OpenStack, EPEL

[root@node01 ~]#
yum --enablerepo=epel-openstack-grizzly,epel -y install openstack-swift-account openstack-swift-container openstack-swift-object xfsprogs xinetd rsync openssh-clients
[2] Format free space on disk (/dev/sdb1 on this example) with XFS and mount on /srv/node (the number "device*" is different on each Storage Nodes).
[root@node01 ~]#
mkfs.xfs -i size=1024 /dev/sdb1

meta-data=/dev/sdb1              isize=1024   agcount=4, agsize=6553514 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=26214055, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=12799, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@node01 ~]#
mkdir -p /srv/node/device0

[root@node01 ~]#
mount -o noatime,nodiratime,nobarrier /dev/sdb1 /srv/node/device0

[root@node01 ~]#
chown -R swift. /srv/node

[root@node01 ~]#
vi /etc/fstab
# add at the last

/dev/sdb1               /srv/node/device0       xfs     noatime,nodiratime,nobarrier 0 0
[3] Copy Swift Ring file from Swift Proxy Node to this Storage Node.
[root@proxy ~]#
scp /etc/swift/*.gz 10.0.0.51:/etc/swift/

The authenticity of host '10.0.0.51 (10.0.0.51)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:f3:ed:54.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.51' (RSA) to the list of known hosts.
root@10.0.0.51's password:
account.ring.gz                            100% 3867     3.8KB/s   00:00
container.ring.gz                          100% 3899     3.8KB/s   00:00
object.ring.gz                             100% 3877     3.8KB/s   00:00
[4] Change owner for Swift Ring file.
[root@node01 ~]#
chown swift. /etc/swift/*.gz

[5] Configure Swift, Rsync.
[root@node01 ~]#
vi /etc/swift/swift.conf
# set the value which is set on Proxy Node

[swift-hash] swift_hash_path_suffix =
swift_shared_path
[root@node01 ~]#
vi /etc/swift/account-server.conf
# line 2: change to own IP address

bind_ip =
10.0.0.51
[root@node01 ~]#
vi /etc/swift/container-server.conf
# line 2: change to own IP address

bind_ip =
10.0.0.51
[root@node01 ~]#
vi /etc/swift/object-server.conf
# line 2: change to own IP address

bind_ip =
10.0.0.51
[root@node01 ~]#
vi /etc/rsyncd.conf
# create new like follows

pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = swift
gid = swift
address = 10.0.0.51

[account]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/account.lock

[container]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/container.lock

[object]
path            = /srv/node
read only       = false
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 25
lock file =     /var/lock/object.lock

[swift_server]
path            = /etc/swift
read only       = true
write only      = no
list            = yes
incoming chmod  = 0644
outgoing chmod  = 0644
max connections = 5
lock file =     /var/lock/swift_server.lock
[6] Start services.
[root@node01 ~]#
chkconfig rsync on

[root@node01 ~]#
chkconfig xinetd on

[root@node01 ~]#
/etc/rc.d/init.d/xinetd start

Starting xinetd: [ OK ]
[root@node01 ~]#
for ringtype in account container object; do
    /etc/rc.d/init.d/openstack-swift-$ringtype start
    chkconfig openstack-swift-$ringtype on
    for service in replicator updater auditor; do
        if [ $ringtype != 'account' ] || [ $service != 'updater' ]; then
            /etc/rc.d/init.d/openstack-swift-$ringtype-$service start
            chkconfig openstack-swift-$ringtype-$service on
        fi
    done
done
Starting swift-account-server:                             [  OK  ]
Starting swift-account-replicator:                         [  OK  ]
Starting swift-account-auditor:                            [  OK  ]
Starting swift-container-server:                           [  OK  ]
Starting swift-container-replicator:                       [  OK  ]
Starting swift-container-updater:                          [  OK  ]
Starting swift-container-auditor:                          [  OK  ]
Starting swift-object-server:                              [  OK  ]
Starting swift-object-replicator:                          [  OK  ]
Starting swift-object-updater:                             [  OK  ]
Starting swift-object-auditor:                             [  OK  ]
 
Tweet